package com.yanfan.iot.service;

import com.yanfan.common.core.domain.AjaxResult;
import com.yanfan.iot.domain.ThingsModelTemplate;

import java.util.List;

/**
 * 通用物模型Service接口
 *
 * @author kerwincui
 * @date 2021-12-16
 */
public interface IThingsModelTemplateService {
    /**
     * 查询通用物模型
     *
     * @param templateId 通用物模型主键
     * @return 通用物模型
     */
    ThingsModelTemplate selectThingsModelTemplateByTemplateId(Long templateId);

    /**
     * 查询通用物模型列表
     *
     * @param thingsModelTemplate 通用物模型
     * @return 通用物模型集合
     */
    List<ThingsModelTemplate> selectThingsModelTemplateList(ThingsModelTemplate thingsModelTemplate);

    /**
     * 新增通用物模型
     *
     * @param thingsModelTemplate 通用物模型
     * @return 结果
     */
    int insertThingsModelTemplate(ThingsModelTemplate thingsModelTemplate);

    /**
     * 修改通用物模型
     *
     * @param thingsModelTemplate 通用物模型
     * @return 结果
     */
    int updateThingsModelTemplate(ThingsModelTemplate thingsModelTemplate);


    /**
     * 根据从机关联id更新模板信息
     *
     * @param thingsModelTemplate
     * @return
     */
    int updateTemplateByTempSlaveId(ThingsModelTemplate thingsModelTemplate);

    /**
     * 批量删除通用物模型
     *
     * @param templateIds 需要删除的通用物模型主键集合
     * @return 结果
     */
    int deleteThingsModelTemplateByTemplateIds(Long[] templateIds);

    /**
     * 删除通用物模型信息
     *
     * @param templateId 通用物模型主键
     * @return 结果
     */
    int deleteThingsModelTemplateByTemplateId(Long templateId);

    /**
     * 导入采集点数据
     *
     * @param lists       数据列表
     * @param tempSlaveId 从机编码
     * @return 结果
     */
    String importData(List<ThingsModelTemplate> lists, String tempSlaveId);

    /**
     * 导出采集点数据
     *
     * @param thingsModelTemplate 通用物模型
     * @return 通用物模型集合
     */
    public List<ThingsModelTemplate> selectThingsModelTemplateExport(ThingsModelTemplate thingsModelTemplate);

    /**
     * 根据模板id查询从机采集点列表
     *
     * @return 变量模板从机采集点集合
     */
    List<ThingsModelTemplate> selectAllByTemplateId(Long templateId);

    /**
     * 导入通用物模型信息
     * @param thingsModelTemplatelist 通用物模型集合
     * @return
     */
    AjaxResult insertThingsModelTemplates(List<ThingsModelTemplate> thingsModelTemplatelist);

}
